<?php
session_start();
function code($w = 100, $h = 40, $n = 4){
	// 1.随机产生一张图片
	$img = imagecreatetruecolor($w, $h);
	$color = imagecolorallocate($img, rand(128, 255), rand(128, 255), rand(128, 255));
	imagefill($img, 0, 0, $color);
	
	// 2.在图片上添加一些干扰元素
	for($i = 0; $i < 100; $i++){
		$x = rand(0, $w);
		$y = rand(0, $w);
		$color = imagecolorallocate($img, rand(128, 255), rand(128, 255), rand(128, 255));
		imagesetpixel($img, $x, $y, $color); // 添加一些干扰点
		
		if($i % 10 == 0){
			$startX = rand(0, $w);
			$startY = rand(0, $h);
			$endX = rand(0, $w);
			$endY = rand(0, $h);
			imageline($img, $startX, $startY, $endX, $endY, $color); // 添加一些干扰线条
		}
	}
	
	// 3.添加验证码
	$str = "123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ";
	$len = strlen($str);
	$code = "";
	for($i = 0; $i < $n; $i++){
		$index = rand(0, $len - 1);
		$code .= $str[$index];
	}
	
	$_SESSION['pic'] = $code;	// 将随机数保存到session
	
	$fontsize = ceil(($w - 20) / $n); // 设置字体的高度
	$y = ceil($h / 2 + $fontsize / 2);
	imagettftext($img, $fontsize, 0, 10, $y, $color, "./1.ttf", $code);
	
	// 4.输出图片
	header("content-type: image/png");
	imagepng($img);
	imagedestory($img); // 释放图片内存
}

code();





